ROP Compiler Jeff Stewart , Veer
نویسندگان
چکیده
When developing exploits for modern x86 64-bit systems, attackers must handcraft exploits for each binary. This involves finding a vulnerability (such as a stack-based buffer overflow) and diverting control flow (overwrite return address). Modern exploits employ Return-Oriented Programming (ROP) to bypass widely deployed defenses such as WˆX. Building a ROP chain requires manual effort to find suitable gadgets out of the multitude of existing code snippets, and then chain those gadgets together in the correct order to call functions or execute injected code. x86 64-bit systems present some challenges that do not exist on other platforms. For example, the 64-bit calling convention primarily uses register arguments, as opposed to stack-pushed arguments on many 32-bit systems. This requires finding gadgets to set values in registers, instead of using an overflow to write to the stack. While many tools exist to help the various stages of exploit building, no public compiler is available to fully create these ROP chains. We present a simple ROP Compiler, developed to more easily generate ROP chains, given a binary and goal. We demonstrate our compiler on both a proof-of-concept simple binary, as well as a well-known utility, rsync. Our tool generates working ROP chains to inject and execute shellcode or call other functions.
منابع مشابه
ROPecker: A Generic and Practical Approach For Defending Against ROP Attack
Return-Oriented Programming (ROP) is a sophisticated exploitation technique that is able to drive target applications to perform arbitrary unintended operations by constructing a gadget chain reusing existing small code sequences (gadgets). Existing defense mechanisms either only handle specific types of gadgets, require access to source code and/or a customized compiler, break the integrity of...
متن کاملROPecker: A Generic and Practical Approach For Defending Against ROP Attacks
Return-Oriented Programming (ROP) is a sophisticated exploitation technique that is able to drive target applications to perform arbitrary unintended operations by constructing a gadget chain reusing existing small code sequences (gadgets). Existing defense mechanisms either only handle specific types of gadgets, require access to source code and/or a customized compiler, break the integrity of...
متن کاملSIGDROP: Signature-based ROP Detection using Hardware Performance Counters
Return-Oriented Programming (ROP) is a software exploit for system compromise. By chaining short instruction sequences from existing code pieces, ROP can bypass static code-integrity checking approaches and non-executable page protections. Existing defenses either require access to source code or binary, a customized compiler or hardware modifications, or suffer from high performance and storag...
متن کاملWhat Cannot Be Read, Cannot Be Leveraged? Revisiting Assumptions of JIT-ROP Defenses
Despite numerous attempts to mitigate code-reuse attacks, Return-Oriented Programming (ROP) is still at the core of exploiting memory corruption vulnerabilities. Most notably, in JIT-ROP, an attacker dynamically searches for suitable gadgets in executable code pages, even if they have been randomized. JIT-ROP seemingly requires that (i) code is readable (to find gadgets at run time) and (ii) ex...
متن کاملGroup 4 initiators for the stereoselective ROP of rac-β-butyrolactone and its copolymerization with rac-lactide.
In this paper we demonstrate the utility of Group 4 metals for the well-controlled and stereoselective (syndiotactic) ring opening polymerization (ROP) of rac-β-butyrolactone (BBL) and their ability to form copolymers.
متن کامل